Programmeren 4
Home

Programmeren 4

Afbeelding PHP delirium
Model, View
& Controller

Programmeren 4

MVC in PHP

Probleem

Als we de Fric-frac opdracht willen uitvoeren met wat we van Tania Rascia hebben geleerd gaan we heel veel repetitief werk moeten verrichten. Daarenboven gaan we geen overzicht hebben van de interactie van de gebruiker met de website. De logica van de submit knoppen staat overal rond verspreid in de forms. Ook de 'bedrijfslogica' van hoe de server op de requests moet antwoorden ligt overal over de forms verspreid. Bij Tania Rascia staat die boven of tussen de views (de html die de gegevens toont aan de gebruiker. De tuturial van Tania Rascia diende dan ook enkel om ons te leren werken met PDO.

We willen een het overzicht behouden dat we in de use cases hebben uitgetekend (Fric-frac Use Case Entiteit Index). Voor elke intiteit hebben we de volgende interacties met de gebruiker opgelijst:

  1. EventCategory/Index
  2. EventCategory/InsertingOne
  3. EventCategory/InsertOne
  4. EventCategory/ReadingOne
  5. EventCategory/ReadOne
  6. EventCategory/ReadingAll
  7. EventCategory/ReadAll
  8. EventCategory/Cancel
  9. EventCategory/UpdatingOne
  10. EventCategory/UpdateOne
  11. EventCategory/DeleteOne

Oplossing

We willen een manier om deze use case interacties op de url aan de server door te geven. Soms hoor je van propere url's, zoals bijvoorbeeld:

https://www/fric- frac.be/EventCategory/Index

Als we een lokale webserver gebruiken ziet dat er dan zo uit:

http://localhost:63348/EventCategory/Index

Het MVC design pattern is hier de oplossing voor. Model-view-controller (of MVC) is een ontwerppatroon dat het complexe toepassingen opdeelt in drie eenheden met elk zijn eigen verantwoordelijkheid:

  1. datamodel (model);
  2. datapresentatie (view);
  3. applicatielogica (controller).;

Het scheiden van deze verantwoordelijkheden bevordert de leesbaarheid en herbruikbaarheid van code. Het maakt ook dat bijvoorbeeld veranderingen in de gebruikersinterface niet direct invloed hebben op het datamodel en vice versa.

Doelstelling

  1. Je leert wat MVC in het algemeen is.
  2. In PHP programmeer je:
    1. routing;
    2. een Controller klasse;

Stappenplan

  1. MVC in het algemeen:
    1. DDD - Domain-Driven Design
    2. MVC geschiedenis
    3. MVC pattern
    4. MVC view
    5. MVC controller
  2. MVC in PHP toepassen:
    1. Het eerste wat we nodig hebben is een manier om die 'propere' url's aan de serverkant op te vangen en te analyseren. Dit heet routing. Er komt een request binnen en de routing analyseert de url en geeft deze analyse door aan de controller.
    2. De controller moet uitmaken en beslissen welke acties er moeten worden ondernomen:
      1. het model invullen:
        1. welke gegevens moeten er uit de database worden opgehaald;
        2. welke bewerkingen moeten op die gegevens worden uitgevoerd;
      2. in welke view moeten die bewerkte gegevens aan de gebruiker worden getoond.
    3. PHP Routing
    4. PHP ThreepennyMVC

    Opdracht

    1. Maak een in de public map een map met de naam Admin.
    2. Verplaats de index.php pagina uit de public map naar public/Admin en hernoem tot Index.php. De I van index met een hoofdletter!
    3. Probeer de voorbeelden uit lesmateriaal uit. Ik raad het ten stelligste aan want je gaat die technieken moeten gebruiken voor het eerste deel van de examenopdracht.
    4. De code vind je in mijn repo op Bitbucket.
    5. Deze opdracht hoef je niet in te sturen.

    JI
    2020-04-22 10:19:48